package cn.sccdlg.jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

/**
 * @author RaoShuang
 * @emil 991207823@qq.com
 * @date 2020/10/16 21:55
 * 程序耦合的探究 以jdbc为例
 *
 */
public class JdbcDemo1 {

    /**
     *      耦合：程序间的依赖关系
     *          包括：
     *              类之间的依赖
     *              方法间的依赖
     *      解耦：
     *          降低程序间的依赖关系
     *      实际开发中：
     *          应该做到：编译期不依赖，运行时才依赖。
     *      解耦的思路：
     *          第一步：使用反射来创建对象，而避免使用new关键字。
     *          第二步：通过读取配置文件来获取要创建的对象全限定类名（尽可能的灵活）
     */
    public static void main(String[] args) throws  Exception{
        //1.注册驱动
        // 强依赖性写法：通过new 获取连接对象--弊端：编译期时就已经在检查，报错就无法编译成功。
//        DriverManager.registerDriver(new com.mysql.jdbc.Driver());
        // 弱依赖写法：程序运行期检查依赖项，不影响编译--反射：
        Class.forName("com.mysql.jdbc.Driver");

        // 2.获取连接
        Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/hm_spring",
                "root","root");
        // 3.获取操作数据库的预处理对象
        PreparedStatement pstm = conn.prepareStatement("select * from account");
        // 4.执行SQL，得到结果集
        ResultSet rs = pstm.executeQuery();
        //5.遍历结果集
        while(rs.next()){

            System.out.println(rs.getString("name"));
        }
        //6.释放资源
        rs.close();
        pstm.close();
        conn.close();
    }
}
